WOLF core
WOLF: A Modular Estimation Framework for Robotics
XXXXXXXXXXXXXXXXXXXXXXXXvoid(0)" frameborder="0" name="MSearchResults" id="MSearchResults">
wolf::SolverManager Class Referenceabstract

Solver manager for WOLF. More...

#include <core/solver/solver_manager.h>

Inheritance diagram for wolf::SolverManager:
[legend]

Public Types

enum class  CovarianceBlocksToBeComputed : std::size_t {
  ALL = 0 , ALL_MARGINALS = 1 , ROBOT_LANDMARKS = 2 , GAUSS = 3 ,
  GAUSS_TUCAN = 4 , GAUSS_TUCAN_ONLY_POSITION = 5
}
 Enumeration of covariance blocks to be computed. More...
 
enum class  ReportVerbosity : std::size_t { QUIET = 0 , BRIEF = 1 , FULL = 2 }
 Enumeration for the verbosity of the solver report. More...
 

Public Member Functions

void printProfiling (std::ostream &stream=std::cout) const
 
const ProfilingUnit & getProfilingTotal () const
 
const ProfilingUnit & getProfilingSolve () const
 
const ProfilingUnit & getProfilingUpdate () const
 
const ProfilingUnit & getProfilingState () const
 
const ProfilingUnit & getProfilingCov () const
 
 SolverManager (const ProblemPtr &_problem)
 Constructor with default params_. More...
 
 SolverManager (const ProblemPtr &_problem, const YAML::Node &_params)
 Constructor with given params_. More...
 
virtual ~SolverManager ()
 
std::string solve ()
 Solves with the verbosity defined in params_. More...
 
std::string solve (const ReportVerbosity report_level)
 Solves with a given verbosity. More...
 
virtual bool computeCovariances () final
 
virtual bool computeCovariances (const CovarianceBlocksToBeComputed blocks) final
 
virtual bool computeCovariances (const std::vector< StateBlockPtr > &st_list) final
 
virtual void update ()
 Updates solver's problem according to the wolf_problem. More...
 
ProblemPtr getProblem ()
 
YAML::Node getParams () const
 
bool getComputeCov () const
 
double getPeriod () const
 
double getCovPeriod () const
 
ReportVerbosity getVerbosity () const
 
virtual bool isStateBlockRegistered (const StateBlockPtr &state_ptr) const final
 
virtual bool isStateBlockFloating (const StateBlockPtr &state_ptr) const final
 
virtual bool isStateBlockFixed (const StateBlockPtr &st) const final
 
virtual bool isFactorRegistered (const FactorBasePtr &fac_ptr) const final
 
virtual bool hasThisLocalParametrization (const StateBlockPtr &st, const LocalParametrizationBasePtr &local_param) const final
 
virtual bool hasLocalParametrization (const StateBlockPtr &st) const final
 
virtual int numFactors () const final
 
virtual int sizeFactors () const final
 
virtual int numStateBlocks () const final
 
virtual int sizeStateBlocks () const final
 
virtual int numStateBlocksEstimated () const final
 
virtual int sizeStateBlocksEstimated () const final
 
virtual int numFactorsDerived () const =0
 
virtual int sizeFactorsDerived () const =0
 
virtual int numStateBlocksEstimatedDerived () const =0
 
virtual int sizeStateBlocksEstimatedDerived () const =0
 
virtual bool check (std::string prefix="") const final
 
virtual bool converged () const =0
 
virtual bool failed () const =0
 
virtual bool wasStopped () const =0
 
virtual unsigned int iterations () const =0
 
virtual double initialCost () const =0
 
virtual double finalCost () const =0
 
virtual double totalTime () const =0
 
virtual void run () final
 
virtual void stop () final
 

Static Public Member Functions

static SolverManagerPtr autoSetup (const ProblemPtr &_problem, const std::string &_input_yaml_file, std::vector< std::string > _primary_schema_folders, bool _skip_yaml_validation=false)
 
static SolverManagerPtr autoSetup (const ProblemPtr &_problem, YAML::Node _param_node, std::vector< std::string > _primary_schema_folders, bool _skip_yaml_validation=false)
 

Protected Member Functions

virtual Eigen::VectorXd & getAssociatedMemBlock (const StateBlockPtr &state_ptr)
 
const double * getAssociatedMemBlockPtr (const StateBlockPtr &state_ptr) const
 
double * getAssociatedMemBlockPtr (const StateBlockPtr &state_ptr)
 
virtual std::string solveDerived (const ReportVerbosity report_level)=0
 
virtual bool computeCovariancesDerived (const CovarianceBlocksToBeComputed blocks)=0
 
virtual bool computeCovariancesDerived (const std::vector< StateBlockPtr > &st_list)=0
 
virtual void addFactorDerived (const FactorBasePtr &fac_ptr)=0
 
virtual void removeFactorDerived (const FactorBasePtr &fac_ptr)=0
 
virtual void addStateBlockDerived (const StateBlockPtr &state_ptr)=0
 
virtual void removeStateBlockDerived (const StateBlockPtr &state_ptr)=0
 
virtual void updateStateBlockStatusDerived (const StateBlockPtr &state_ptr)=0
 
virtual void updateStateBlockLocalParametrizationDerived (const StateBlockPtr &state_ptr)=0
 
virtual bool isStateBlockRegisteredDerived (const StateBlockPtr &state_ptr) const =0
 
virtual bool isFactorRegisteredDerived (const FactorBasePtr &fac_ptr) const =0
 
virtual bool isStateBlockFixedDerived (const StateBlockPtr &st) const =0
 
virtual bool hasLocalParametrizationDerived (const StateBlockPtr &st) const =0
 
virtual bool hasThisLocalParametrizationDerived (const StateBlockPtr &st, const LocalParametrizationBasePtr &local_param) const =0
 
virtual void printProfilingDerived (std::ostream &stream=std::cout) const =0
 
virtual bool checkDerived (std::string prefix="") const =0
 

Protected Attributes

ProblemPtr wolf_problem_
 
ProfilingUnit profiling_total_
 
ProfilingUnit profiling_solve_
 
ProfilingUnit profiling_update_
 
ProfilingUnit profiling_state_
 
ProfilingUnit profiling_cov_
 
YAML::Node params_
 
std::map< StateBlockPtr, Eigen::VectorXd > state_blocks_
 
std::map< StateBlockPtr, FactorBasePtrList > state_blocks_2_factors_
 
std::set< FactorBasePtr > factors_
 
std::set< StateBlockPtr > floating_state_blocks_
 
double period_
 
ReportVerbosity verbose_
 
bool compute_cov_
 
CovarianceBlocksToBeComputed cov_enum_
 
double cov_period_
 
std::chrono::high_resolution_clock::time_point last_cov_time_
 
bool stopping_
 

Detailed Description

Solver manager for WOLF.

Member Enumeration Documentation

◆ CovarianceBlocksToBeComputed

enum class wolf::SolverManager::CovarianceBlocksToBeComputed : std::size_t
strong

Enumeration of covariance blocks to be computed.

Enumerator
ALL 

All blocks and all cross-covariances.

ALL_MARGINALS 

All marginals.

ROBOT_LANDMARKS 

marginals of landmarks and current robot pose plus cross covariances of current robot and all landmarks

GAUSS 

GAUSS: last frame P and V.

GAUSS_TUCAN 

GAUSS: last frame P, O, V and T.

GAUSS_TUCAN_ONLY_POSITION 

GAUSS: last frame P and T.

◆ ReportVerbosity

enum class wolf::SolverManager::ReportVerbosity : std::size_t
strong

Enumeration for the verbosity of the solver report.

Enumerator
QUIET 
BRIEF 
FULL 

Constructor & Destructor Documentation

◆ SolverManager() [1/2]

wolf::SolverManager::SolverManager ( const ProblemPtr &  _problem)

Constructor with default params_.

◆ SolverManager() [2/2]

wolf::SolverManager::SolverManager ( const ProblemPtr &  _problem,
const YAML::Node &  _params 
)

Constructor with given params_.

◆ ~SolverManager()

wolf::SolverManager::~SolverManager ( )
virtual

Member Function Documentation

◆ addFactorDerived()

virtual void wolf::SolverManager::addFactorDerived ( const FactorBasePtr &  fac_ptr)
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ addStateBlockDerived()

virtual void wolf::SolverManager::addStateBlockDerived ( const StateBlockPtr &  state_ptr)
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ autoSetup() [1/2]

SolverManagerPtr wolf::SolverManager::autoSetup ( const ProblemPtr &  _problem,
const std::string &  _input_yaml_file,
std::vector< std::string >  _primary_schema_folders,
bool  _skip_yaml_validation = false 
)
static

◆ autoSetup() [2/2]

SolverManagerPtr wolf::SolverManager::autoSetup ( const ProblemPtr &  _problem,
YAML::Node  _param_node,
std::vector< std::string >  _primary_schema_folders,
bool  _skip_yaml_validation = false 
)
static

◆ check()

bool wolf::SolverManager::check ( std::string  prefix = "") const
finalvirtual

◆ checkDerived()

virtual bool wolf::SolverManager::checkDerived ( std::string  prefix = "") const
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ computeCovariances() [1/3]

bool wolf::SolverManager::computeCovariances ( )
finalvirtual

◆ computeCovariances() [2/3]

bool wolf::SolverManager::computeCovariances ( const CovarianceBlocksToBeComputed  blocks)
finalvirtual

◆ computeCovariances() [3/3]

bool wolf::SolverManager::computeCovariances ( const std::vector< StateBlockPtr > &  st_list)
finalvirtual

◆ computeCovariancesDerived() [1/2]

virtual bool wolf::SolverManager::computeCovariancesDerived ( const CovarianceBlocksToBeComputed  blocks)
protectedpure virtual

Implemented in wolf::SolverEigen, and wolf::SolverCeres.

◆ computeCovariancesDerived() [2/2]

virtual bool wolf::SolverManager::computeCovariancesDerived ( const std::vector< StateBlockPtr > &  st_list)
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ converged()

virtual bool wolf::SolverManager::converged ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ failed()

virtual bool wolf::SolverManager::failed ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ finalCost()

virtual double wolf::SolverManager::finalCost ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ getAssociatedMemBlock()

Eigen::VectorXd & wolf::SolverManager::getAssociatedMemBlock ( const StateBlockPtr &  state_ptr)
protectedvirtual

◆ getAssociatedMemBlockPtr() [1/2]

double * wolf::SolverManager::getAssociatedMemBlockPtr ( const StateBlockPtr &  state_ptr)
protected

◆ getAssociatedMemBlockPtr() [2/2]

const double * wolf::SolverManager::getAssociatedMemBlockPtr ( const StateBlockPtr &  state_ptr) const
protected

◆ getComputeCov()

bool wolf::SolverManager::getComputeCov ( ) const

◆ getCovPeriod()

double wolf::SolverManager::getCovPeriod ( ) const

◆ getParams()

YAML::Node wolf::SolverManager::getParams ( ) const

◆ getPeriod()

double wolf::SolverManager::getPeriod ( ) const

◆ getProblem()

wolf::ProblemPtr wolf::SolverManager::getProblem ( )

◆ getProfilingCov()

const ProfilingUnit & wolf::SolverManager::getProfilingCov ( ) const

◆ getProfilingSolve()

const ProfilingUnit & wolf::SolverManager::getProfilingSolve ( ) const

◆ getProfilingState()

const ProfilingUnit & wolf::SolverManager::getProfilingState ( ) const

◆ getProfilingTotal()

const ProfilingUnit & wolf::SolverManager::getProfilingTotal ( ) const

◆ getProfilingUpdate()

const ProfilingUnit & wolf::SolverManager::getProfilingUpdate ( ) const

◆ getVerbosity()

SolverManager::ReportVerbosity wolf::SolverManager::getVerbosity ( ) const

◆ hasLocalParametrization()

bool wolf::SolverManager::hasLocalParametrization ( const StateBlockPtr &  st) const
finalvirtual

◆ hasLocalParametrizationDerived()

virtual bool wolf::SolverManager::hasLocalParametrizationDerived ( const StateBlockPtr &  st) const
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ hasThisLocalParametrization()

bool wolf::SolverManager::hasThisLocalParametrization ( const StateBlockPtr &  st,
const LocalParametrizationBasePtr &  local_param 
) const
finalvirtual

◆ hasThisLocalParametrizationDerived()

virtual bool wolf::SolverManager::hasThisLocalParametrizationDerived ( const StateBlockPtr &  st,
const LocalParametrizationBasePtr &  local_param 
) const
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ initialCost()

virtual double wolf::SolverManager::initialCost ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ isFactorRegistered()

bool wolf::SolverManager::isFactorRegistered ( const FactorBasePtr &  fac_ptr) const
finalvirtual

◆ isFactorRegisteredDerived()

virtual bool wolf::SolverManager::isFactorRegisteredDerived ( const FactorBasePtr &  fac_ptr) const
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ isStateBlockFixed()

bool wolf::SolverManager::isStateBlockFixed ( const StateBlockPtr &  st) const
finalvirtual

◆ isStateBlockFixedDerived()

virtual bool wolf::SolverManager::isStateBlockFixedDerived ( const StateBlockPtr &  st) const
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ isStateBlockFloating()

bool wolf::SolverManager::isStateBlockFloating ( const StateBlockPtr &  state_ptr) const
finalvirtual

◆ isStateBlockRegistered()

bool wolf::SolverManager::isStateBlockRegistered ( const StateBlockPtr &  state_ptr) const
finalvirtual

◆ isStateBlockRegisteredDerived()

virtual bool wolf::SolverManager::isStateBlockRegisteredDerived ( const StateBlockPtr &  state_ptr) const
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ iterations()

virtual unsigned int wolf::SolverManager::iterations ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ numFactors()

int wolf::SolverManager::numFactors ( ) const
finalvirtual

◆ numFactorsDerived()

virtual int wolf::SolverManager::numFactorsDerived ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ numStateBlocks()

int wolf::SolverManager::numStateBlocks ( ) const
finalvirtual

◆ numStateBlocksEstimated()

int wolf::SolverManager::numStateBlocksEstimated ( ) const
finalvirtual

◆ numStateBlocksEstimatedDerived()

virtual int wolf::SolverManager::numStateBlocksEstimatedDerived ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ printProfiling()

void wolf::SolverManager::printProfiling ( std::ostream &  stream = std::cout) const

◆ printProfilingDerived()

virtual void wolf::SolverManager::printProfilingDerived ( std::ostream &  stream = std::cout) const
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ removeFactorDerived()

virtual void wolf::SolverManager::removeFactorDerived ( const FactorBasePtr &  fac_ptr)
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ removeStateBlockDerived()

virtual void wolf::SolverManager::removeStateBlockDerived ( const StateBlockPtr &  state_ptr)
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ run()

void wolf::SolverManager::run ( )
finalvirtual

◆ sizeFactors()

int wolf::SolverManager::sizeFactors ( ) const
finalvirtual

◆ sizeFactorsDerived()

virtual int wolf::SolverManager::sizeFactorsDerived ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ sizeStateBlocks()

int wolf::SolverManager::sizeStateBlocks ( ) const
finalvirtual

◆ sizeStateBlocksEstimated()

int wolf::SolverManager::sizeStateBlocksEstimated ( ) const
finalvirtual

◆ sizeStateBlocksEstimatedDerived()

virtual int wolf::SolverManager::sizeStateBlocksEstimatedDerived ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ solve() [1/2]

std::string wolf::SolverManager::solve ( )

Solves with the verbosity defined in params_.

◆ solve() [2/2]

std::string wolf::SolverManager::solve ( const ReportVerbosity  report_level)

Solves with a given verbosity.

◆ solveDerived()

virtual std::string wolf::SolverManager::solveDerived ( const ReportVerbosity  report_level)
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ stop()

void wolf::SolverManager::stop ( )
finalvirtual

◆ totalTime()

virtual double wolf::SolverManager::totalTime ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ update()

void wolf::SolverManager::update ( )
virtual

Updates solver's problem according to the wolf_problem.

◆ updateStateBlockLocalParametrizationDerived()

virtual void wolf::SolverManager::updateStateBlockLocalParametrizationDerived ( const StateBlockPtr &  state_ptr)
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ updateStateBlockStatusDerived()

virtual void wolf::SolverManager::updateStateBlockStatusDerived ( const StateBlockPtr &  state_ptr)
protectedpure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

◆ wasStopped()

virtual bool wolf::SolverManager::wasStopped ( ) const
pure virtual

Implemented in wolf::SolverCeres, and wolf::SolverEigen.

Member Data Documentation

◆ compute_cov_

bool wolf::SolverManager::compute_cov_
protected

◆ cov_enum_

CovarianceBlocksToBeComputed wolf::SolverManager::cov_enum_
protected

◆ cov_period_

double wolf::SolverManager::cov_period_
protected

◆ factors_

std::set<FactorBasePtr> wolf::SolverManager::factors_
protected

◆ floating_state_blocks_

std::set<StateBlockPtr> wolf::SolverManager::floating_state_blocks_
protected

◆ last_cov_time_

std::chrono::high_resolution_clock::time_point wolf::SolverManager::last_cov_time_
protected

◆ params_

YAML::Node wolf::SolverManager::params_
protected

◆ period_

double wolf::SolverManager::period_
protected

◆ profiling_cov_

ProfilingUnit wolf::SolverManager::profiling_cov_
protected

◆ profiling_solve_

ProfilingUnit wolf::SolverManager::profiling_solve_
protected

◆ profiling_state_

ProfilingUnit wolf::SolverManager::profiling_state_
protected

◆ profiling_total_

ProfilingUnit wolf::SolverManager::profiling_total_
protected

◆ profiling_update_

ProfilingUnit wolf::SolverManager::profiling_update_
protected

◆ state_blocks_

std::map<StateBlockPtr, Eigen::VectorXd> wolf::SolverManager::state_blocks_
protected

◆ state_blocks_2_factors_

std::map<StateBlockPtr, FactorBasePtrList> wolf::SolverManager::state_blocks_2_factors_
protected

◆ stopping_

bool wolf::SolverManager::stopping_
protected

◆ verbose_

ReportVerbosity wolf::SolverManager::verbose_
protected

◆ wolf_problem_

ProblemPtr wolf::SolverManager::wolf_problem_
protected

The documentation for this class was generated from the following files: